 #!/usr/bin/env python
# encoding: utf-8
import time
# pip install pywin32
import win32api  #调用windows API的模块库
import win32gui # 这个模块内定义了一些有关图形操作的API  作用：调用窗口用
import win32con  # 模块内定义了windows API的宏  消息类型
import win32clipboard as winform  # 实现读剪贴

# 像QQ发送消息
def windows_QQ_message(nikename, messasge, sleepTime=0.5):
    '''
    通过控制Windows窗口，模拟enter按键发送消息(QQ发送消息有二种方式Enter/Ctrl+Enter,本次案例使用Enter)
    :param str nikename: QQ好友备注名称
    :param str messasge: 要发送的消息内容
    :param  sleepTime: 每条消息的间隔时间，默认0.5秒
    :return:
    '''
    # 将测试消息复制到剪切板中
    winform.OpenClipboard()  #打开剪贴版
    winform.EmptyClipboard()  #清空剪贴版
    # 尝试将剪切板内容读取为Unicode文本
    winform.SetClipboardData(win32con.CF_UNICODETEXT, messasge)  #设置面板属性
    winform.CloseClipboard()  #关闭剪贴版
    # 获取窗口句柄
    handle = win32gui.FindWindow(None, nikename)    # QQ
    # 填充消息
    win32gui.SendMessage(handle, 770, 0, 0)
    # 回车发送消息
    win32gui.SendMessage(handle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
    time.sleep(sleepTime) # 延时发送

# 
# 向微信发送消息
def windows_weChat_message(nickname, message, sleepTime=0.5):
    handle = win32gui.FindWindow(None, nickname) #获取窗口句柄 获得操作对象（好友备注名称）
    win32gui.SetForegroundWindow(handle)  # 激活窗口，键盘输入将转向该窗口
    # a = ord('a')
    # print(a) #转为十进制数据
    st = [ord(s) for s in message]  #将信息遍历 并转码(转为十进制数据)
    for x in st:
        win32gui.PostMessage(handle, win32con.WM_CHAR, x, 0)  #填入信息
    # 模拟键盘输出
    win32api.keybd_event(13, 0, 0, 0)  # 回车键
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)  # 释放回车键
    time.sleep(sleepTime)

'''
    keybd_event模拟键盘输入：https://blog.csdn.net/qq_29360495/article/details/53006082
'''
if __name__ == '__main__':
    for i in range(100):
        windows_QQ_message("麻将","傻逼",1)


